package model

import (
	"fx_swift_agent/pkg/crypt"
	"github.com/shopspring/decimal"
)

// FxEnterpriseAccountApply  企业帐户申请
type FxEnterpriseAccountApply struct {
	CountryId      int64  `json:"country_id"`      // 国家id
	Account        string `json:"account"`         //  账户
	CompanyName    string `json:"company_name"`    //  注册公司名称
	RegisterCode   string `json:"register_code"`   //  注册编号
	CompanyTime    string `json:"company_time"`    //  成立时间
	CompanyType    string `json:"company_type"`    //  企业类型
	CompanyAddress string `json:"company_address"` //  公司地址
	ContactPerson  string `json:"contact_person"`  //  公司联系人
	Phone          string `json:"phone"`           //  联系电话
	Image          string `json:"image"`           //  各种图片的json串
	Status         string `json:"status"`          //  审核状态:init、pass、refuse
	RefuseReason   string `json:"refuse_reason"`   // 拒绝理由
}

// FxAccount  资金帐户表
type FxAccount struct {
	ID          int64           `json:"id"`           //  主键
	Account     string          `json:"account"`      //  帐户
	Balance     decimal.Decimal `json:"balance"`      //  余额
	Certificate string          `json:"certificate"`  //  凭证
	AccountType string          `json:"account_type"` //  帐户类型:agent-代理商、boss-我们自己
}

// FxRecord  资金流水表
type FxRecord struct {
	ID               int64   `json:"id"`                //  主键
	DiscountOrderNo  string  `json:"discount_order_no"` //  充值订单号
	Account          string  `json:"account"`           //  帐户
	Amount           float64 `json:"amount"`            //  充值金额
	ActualAmount     float64 `json:"actual_amount"`     //  实际到账
	HandingFree      float64 `json:"handing_free"`      //  手续费
	RemainingBalance float64 `json:"remaining_balance"` // 剩余余额
	BudgetSign       int64   `json:"budget_sign"`       //  收支状态,0-支出,1-收入
	AccountType      string  `json:"account_type"`      //  帐户类型:agent-代理商、boss-我们自己
	RecordType       string  `json:"record_type"`       //  流水类型:ordinary,手续费:free
	Desc             string  `json:"desc"`              //  描述
	Currency         string  `json:"currency"`          // 币种
}

// FxCountry  国家表
type FxCountry struct {
	ID          int64  `json:"id"`           //  主键
	EnglishName string `json:"english_name"` //  英文名字
	ChineseName string `json:"chinese_name"` //  中文名字
	CountryCode string `json:"country_code"` //  国家编码
	Status      string `json:"status"`
}

// FxCardCountry  币种国家
type FxCardCountry struct {
	ID          int64  `json:"id"`           //  主键
	EnglishName string `json:"english_name"` //  英文名字
	ChineseName string `json:"chinese_name"` //  中文名字
	CountryCode string `json:"country_code"` //  国家编码
}

// FxCompanyType  企业类型表
type FxCompanyType struct {
	ID          int64  `json:"id"`           //  主键
	EnglishName string `json:"english_name"` //  英文名字
	ChineseName string `json:"chinese_name"` //  中文名字
}

// FxDiscountOrder  充值订单表
type FxDiscountOrder struct {
	ID              int64           `json:"id"`                //  主键
	Account         string          `json:"account"`           //  帐户
	DiscountOrderNo string          `json:"discount_order_no"` //  充值订单号
	CompanyName     string          `json:"company_name"`      //  企业名称
	RechargeType    string          `json:"recharge_type"`     //  充值类型,ordinary-普通充值,discount-优惠充值
	Amount          decimal.Decimal `json:"amount"`            //  充值金额
	ActualAmount    decimal.Decimal `json:"actual_amount"`     //  实际到账
	HandingFree     decimal.Decimal `json:"handing_free"`      //  手续费
	Status          string          `json:"status"`            //  状态:init、pass、refuse
	RefuseReason    string          `json:"refuse_reason"`     //  拒绝原因
	TransferImage   string          `json:"transfer_image"`    //  转账凭证
}

// FxAgent  代理商表
type FxAgent struct {
	Account        string  `json:"account"`          //  账户
	Password       string  `json:"password"`         //  密码
	Salt           string  `json:"salt"`             //  用于密码加密
	Email          string  `json:"email"`            //  邮箱
	NickName       string  `json:"nick_name"`        // 昵称
	AppId          string  `json:"app_id"`           //  app_id
	AppSecret      string  `json:"app_secret"`       //  app_secret
	IsFreeze       int64   `json:"is_freeze"`        //  是否冻结 0-冻结,1-未冻结
	CountryId      string  `json:"country_id"`       //  国家id
	UseCardNums    int64   `json:"use_card_nums"`    //  使用卡次数
	Fee            float64 `json:"fee"`              // 手续费
	CardOpeningFee float64 `json:"card_opening_fee"` // 开卡费
}

// FxAgentManagement  代理商帐户管理表
type FxAgentManagement struct {
	ID                  int64           `json:"id"`                    //  主键
	Account             string          `json:"account"`               //  账户
	ManagementFee       decimal.Decimal `json:"management_fee"`        //  当前帐户管理费
	FutureManagementFee decimal.Decimal `json:"future_management_fee"` //  帐户管理费
	EffectiveDate       string          `json:"effective_date"`        //  当前生效时间
	FutureEffectiveDate string          `json:"future_effective_date"` // 即将生效时间
	Status              string          `json:"status"`                //已欠费-outstanding,已启用-enabled
	CreatedAt           string          `json:"created_at"`
}

// FxNotify  站内通知表
type FxNotify struct {
	ID      int64  `json:"id"`      //  主键
	Account string `json:"account"` //  业务主键
	Content string `json:"content"` //  内容
	Status  int64  `json:"status"`  //  0-未读,1-已读
}

// FxAgentCallback  代理商回调
type FxAgentCallback struct {
	ID          int64  `json:"id"`            //  主键
	Account     string `json:"account"`       //  代理商帐号
	CallBackUrl string `json:"call_back_url"` //  回调地址
}

func (m *FxAgent) ComparePassword(password string) error {
	return crypt.ComparePassword(m.Password, m.Salt, password)
}
